package simple;

import java.util.Stack;

/**
 * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
 *
 * 有效字符串需满足：
 * 左括号必须用相同类型的右括号闭合。
 * 左括号必须以正确的顺序闭合。
 *
 * 链接：https://leetcode-cn.com/problems/valid-parentheses
 * @author 胡宇轩
 * @Email: yuxuan.hu01@bianlifeng.com
 */
public class ValidParentheses {
    /**
     * 这是一道easy题。
     * 对于每个右括号来说，其一定要匹配一个左括号。且应当是栈顶的（即最近的）
     * 匹配成功了，则对栈顶的左括号进行出队。
     * */
    class Solution {
        public boolean isValid(String s) {
            Stack<Character> stack = new Stack<>();
            for (char c : s.toCharArray()){
                if(stack.isEmpty()){
                    stack.add(c);
                    continue;
                }
                Character peek = stack.peek();
                if(c == ')' && peek == '('){
                    stack.pop();
                }
                else if(c == ']' && peek == '['){
                    stack.pop();
                }
                else if(c == '}' && peek == '{'){
                    stack.pop();
                }
                else{
                    stack.add(c);
                }
            }
            return stack.isEmpty();
        }
    }
}
